import sis_information.mysql_connections as my_connection
import xlrd
import datetime
import os


# 实例化MysqlConnection类
mysql_connection = my_connection.MysqlConnection()


# 获取文件列表
def get_files_list(file_dir):
    """
    获取文件列表，返回二维列表，[0]存储文件路径,[1]存储文件名称
    :param file_dir: 文件路径
    :return: 文件路径，文件名称
    """
    # 文件路径
    path_list = []
    # 文件名称
    table_list = []
    file_name_list = os.listdir(file_dir)
    for file_name in file_name_list:
        path = os.path.join(file_dir, file_name)
        if os.path.isdir(path):
            tmp_lists = get_files_list(path)
            path_list.extend(tmp_lists[0])
            table_list.extend(tmp_lists[1])
        else:
            path_list.append(path)
            file_name = file_name.split('.')[0]
            file_name = file_name.strip()
            file_name = file_name.lower()
            table_list.append(file_name)
    return [path_list, table_list]


# 获取开始导入时间
start_time = datetime.datetime.now()
# @files_lists：定义文件路径列表list
# @files_lists_count：定义文件路径数量
files_lists = get_files_list(my_connection.XLSX_FILE)[0]
files_lists_count = len(files_lists)
print('{}个文件等待导入......'.format(files_lists_count))
# 获取文件路径
for files_list in files_lists:
    # 打开excel文件
    workbook = xlrd.open_workbook(files_list)
    print('{}开始导入================>'.format(files_list))
    # 只导入第一个sheet中的数据
    sheet = workbook.sheet_by_index(0)
    # INSERT语句头
    query = """ INSERT INTO st_pptn_r (addvcdId, stationId, TM, DYP) VALUES """
    # 获取Excel表格每列参数
    for r in range(1, sheet.nrows):
        addvcdId = sheet.cell(r, 0).value
        stationId = sheet.cell(r, 1).value
        tm = sheet.cell(r, 3).value
        dyp = sheet.cell(r, 4).value
        # INSERT语句VALUES值
        values = (addvcdId, stationId, tm, dyp)
        # 组合sql语句
        query_m = query + str(values)
        # 执行封装类insert方法并提交
        mysql_connection.insert_all(query_m)
        mysql_connection.end(option='commit')
    # 打印导入Excel表格路径及导入数据行数
    print('{}完成,导入{}条数据。'.format(files_list, sheet.nrows - 1))
# 释放cursor资源
mysql_connection.dispose(is_end=1)
# 打印导入时间
end_time = datetime.datetime.now()
print('开始时间：{}'.format(start_time))
print('结束时间：{}'.format(end_time))
print('用时：{}秒,共计导入{}个文件'.format((end_time - start_time), files_lists_count))
